home *** CD-ROM | disk | FTP | other *** search
- Path: Informatik.Uni-Dortmund.DE!news
- From: schwab@lamothe.informatik.uni-dortmund.de (Andreas Schwab)
- Newsgroups: comp.std.c
- Subject: Re: sizeof(1L) in preprocesor;How to tell sizeof(double)>sizeof(long) ?
- Date: 08 Jan 1996 13:58:51 +0100
- Organization: Dortmund University, Germany
- Sender: schwab@lamothe.informatik.uni-dortmund.de
- Message-ID: <vyzd98ug7w4.fsf@lamothe.informatik.uni-dortmund.de>
- References: <sc3f9vb6gk.fsf@lns101.lns.cornell.edu>
- <1996Jan5.094122.16151@sq.com>
- Reply-To: schwab@issan.informatik.uni-dortmund.de
- NNTP-Posting-Host: lamothe.informatik.uni-dortmund.de
- In-reply-to: msb@sq.com's message of Fri, 5 Jan 1996 09:41:22 GMT
- X-Newsreader: Gnus v5.0.13
-
- In article <1996Jan5.094122.16151@sq.com>, msb@sq.com (Mark Brader) writes:
-
- |> Nobuhiko Katayama (nk@lns598.lns.cornell.edu) writes:
- |>> is there any portable way to tell whether
- |>> long is longer(shorter) than double in preprocessor stage ?
-
- |> I can't think of any way.
-
- |> You *can* use the various characteristics defined in <limits.h> and
- |> <float.h>, as explained in section 5.2.4.2 (2.2.4.2), to find out
- |> various information about the types. In particular, if what you
- |> really want is to choose whichever of the two types can hold the
- |> larger exact integer value, then in practice you need only do:
-
- |> #include <limits.h>
- |> #include <float.h>
- |> #if LONG_MAX * DBL_EPSILON > 1
- |> typedef long mytype;
- |> #define mytype_format "%ld" /* for printf */
- |> #else
- |> typedef double mytype;
- |> #define mytype_format "%f"
- |> #endif
-
- This doesn't work as floating point numbers aren't allowed in #if
- expressions. It must be written using a runtime check (which will
- probably optimized out by the compiler).
- --
- Andreas Schwab "And now for something
- schwab@issan.informatik.uni-dortmund.de completely different"
-